<template>
  <header class="header">
    <h1>todos</h1>
   
    <input v-model="chkAll" id="toggle-all" class="toggle-all" type="checkbox" />
    <label for="toggle-all"></label>
    <input
      class="new-todo"
      placeholder="输入任务名称-回车确认"
      autofocus
      v-model.trim="task"
      @keyup.enter="add"
    />
  </header>
</template>

<script>
export default {
  props: {
    list: {
      required: true,
      // 限制类型必须是数组
      type: Array
    }
  },
  data() {
    return {
      task: ''
    }
  },
  methods: {
    add () {
      // 1. 非空判断
      if (this.task == '') return alert('任务名不能为空')
      // 2. 把输入的内容加到页面上
      // 数据一变界面就自动变，也就是说只要数组多一个，界面就会多一个
      // 所以我们要做的事就是把输入的任务加到数组里即可
      // 但问题在于数组是父组件的，所以我此时此刻相当于又要改父组件，那就又要子传父
      // 把输入的内容给父
      this.$emit('add', this.task)

      // 把东西给完父，自己输入内容就可以清空
      this.task = ''
    }
  },
  computed: {

    chkAll: {
      get () {
        // 数组中的都选中了才为true，有一个没选中就为false
        return this.list.every( v => v.isDone)
      },
      set (val) {
        this.list.forEach(v => v.isDone = val)
      }
    }
  }
}
</script>